//package com.example.springboot.common;
//
//import cn.hutool.core.util.StrUtil;
//import com.auth0.jwt.JWT;
//import com.auth0.jwt.JWTVerifier;
//import com.auth0.jwt.algorithms.Algorithm;
//import com.auth0.jwt.exceptions.JWTDecodeException;
//import com.auth0.jwt.exceptions.JWTVerificationException;
//import com.example.springboot.entity.User;
//import com.example.springboot.exception.ServiceException;
//import com.example.springboot.mapper.UserMapper;
//import org.springframework.web.servlet.HandlerInterceptor;
//
//import javax.annotation.Resource;
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//
//
///**
// * 功能：
// * 作者：旺旺威化饼
// * 日期：2025/03/18 10:15
// **/
////自定义拦截器
//public class JwtInterceptor implements HandlerInterceptor {
//    @Resource
//    private UserMapper userMapper;
//    @Override
//    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler){
//        String token= request.getHeader("token");   //header里面传过来的参数
//        if (StrUtil.isBlank(token)){
//            token=request.getParameter("token");    //url参数  ?token=xxx
//        }
////        //如果不是映射方法直接跳过
////        if (handler instanceof HandlerMethod){
////            AuthAccess annotation=((HandlerMethod) handler).getMethodAnnotation(AuthAccess.class);
////            if(annotation !=null){
////                return true;
////            }
////            if(request.getMethod().equals(HttpMethod.OPTIONS.name())){
////
////                return true;
////            }
////        }
//        //执行认证
//        if (StrUtil.isBlank(token)){
//            throw new ServiceException("401","请登录");
//        }
//        //获取 token 中的 user id
//        String userId;
//        try{
//            userId= JWT.decode(token).getAudience().get(0); //JWT.decode(token)解码 jwt token
//        }catch (JWTDecodeException j){
//            throw new ServiceException("401","请登录");
//        }
//        //根据token中的userId查询数据库
//        User user=userMapper.selectById(Integer.valueOf(userId));
//        if (user == null){
//            throw new ServiceException("401","请登录");
//        }
//        //通过用户密码加密之后生成一个验证器
//        JWTVerifier jwtVerifier=JWT.require(Algorithm.HMAC256(user.getPassword())).build();
//        try{
//            jwtVerifier.verify(token);//验证token
//        }catch (JWTVerificationException e){
//            throw new ServiceException("401","请登录");
//        }
//        return true;
//    }
//}
